From: Jonas Dreßler Date: Tue, 10 Mar 2020 10:05:13 +0000 (+0100) Subject: boxpointer: Call set_allocation before allocating child X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~684^2^2~452 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=63a0e521fd37fe5f19ac29a540fa00b03db7036c;p=gnome-shell.git boxpointer: Call set_allocation before allocating child It's important to update the allocation of the parent before allocating its children, it's an assumption we make in a lot of places. This broke resource scale calculation for boxpointers and their children when multiple monitors with different scales are used and the primary monitor is not positioned at x=0, y=0. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1615 --- diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js index 03cb4a567..60540621d 100644 --- a/js/ui/boxpointer.js +++ b/js/ui/boxpointer.js @@ -197,6 +197,11 @@ var BoxPointer = GObject.registerClass({ } vfunc_allocate(box, flags) { + if (this._sourceActor && this._sourceActor.mapped) { + this._reposition(box); + this._updateFlip(box); + } + this.set_allocation(box, flags); let themeNode = this.get_theme_node(); @@ -230,12 +235,6 @@ var BoxPointer = GObject.registerClass({ break; } this.bin.allocate(childBox, flags); - - if (this._sourceActor && this._sourceActor.mapped) { - this._reposition(box); - this._updateFlip(box); - this.set_allocation(box, flags); - } } _drawBorder(area) {